#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
创建发布包脚本
整理exe文件和相关文档到发布目录
"""

import os
import shutil
import zipfile
from datetime import datetime

def create_release_package():
    """创建发布包"""
    print("创建发布包...")
    
    # 发布目录
    release_dir = "MP4VideoCompressor_v1.0.0_Release"
    
    # 清理并创建发布目录
    if os.path.exists(release_dir):
        shutil.rmtree(release_dir)
    os.makedirs(release_dir)
    
    # 复制文件到发布目录
    files_to_copy = [
        ("dist/MP4VideoCompressor.exe", "MP4VideoCompressor.exe"),
        ("发布说明.md", "使用说明.md"),
        ("用户手册.md", "用户手册.md"),
    ]
    
    for src, dst in files_to_copy:
        if os.path.exists(src):
            dst_path = os.path.join(release_dir, dst)
            shutil.copy2(src, dst_path)
            print(f"✅ 复制: {src} -> {dst}")
        else:
            print(f"❌ 文件不存在: {src}")
    
    # 创建安装检查脚本
    install_script = """@echo off
chcp 65001 >nul
echo ========================================
echo MP4视频压缩工具 v1.0.0
echo ========================================
echo.

echo 检查FFmpeg是否已安装...
ffmpeg -version >nul 2>&1
if %errorlevel% neq 0 (
    echo [错误] 未检测到FFmpeg
    echo.
    echo 请先安装FFmpeg:
    echo 1. 访问 https://www.gyan.dev/ffmpeg/builds/
    echo 2. 下载 ffmpeg-release-essentials.zip
    echo 3. 解压到 C:\\ffmpeg
    echo 4. 将 C:\\ffmpeg\\bin 添加到系统PATH
    echo 5. 重新运行此脚本验证
    echo.
    echo 详细安装说明请查看"使用说明.md"
    echo.
    pause
    exit /b 1
) else (
    echo [成功] FFmpeg已安装
    echo.
    echo 环境检查完成！现在可以运行 MP4VideoCompressor.exe
    echo.
    pause
)
"""
    
    with open(os.path.join(release_dir, "环境检查.bat"), "w", encoding="utf-8") as f:
        f.write(install_script)
    print("✅ 创建: 环境检查.bat")
    
    # 创建快速开始文档
    quick_start = """# 快速开始

## 1. 环境准备
双击运行"环境检查.bat"，确保FFmpeg已安装。

## 2. 启动程序
双击运行"MP4VideoCompressor.exe"。

## 3. 使用步骤
1. 选择视频文件
2. 选择输出目录
3. 选择压缩质量
4. 开始压缩

## 4. 详细说明
请查看"使用说明.md"获取完整的使用指南。

---
MP4视频压缩工具 v1.0.0
"""
    
    with open(os.path.join(release_dir, "快速开始.txt"), "w", encoding="utf-8") as f:
        f.write(quick_start)
    print("✅ 创建: 快速开始.txt")
    
    # 获取文件大小信息
    exe_path = os.path.join(release_dir, "MP4VideoCompressor.exe")
    if os.path.exists(exe_path):
        exe_size = os.path.getsize(exe_path)
        print(f"✅ exe文件大小: {exe_size / 1024 / 1024:.2f} MB")
    
    print(f"\n✅ 发布包创建完成: {release_dir}/")
    
    # 创建ZIP压缩包
    zip_filename = f"{release_dir}.zip"
    with zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(release_dir):
            for file in files:
                file_path = os.path.join(root, file)
                arc_path = os.path.relpath(file_path, release_dir)
                zipf.write(file_path, arc_path)
    
    zip_size = os.path.getsize(zip_filename)
    print(f"✅ 压缩包创建完成: {zip_filename} ({zip_size / 1024 / 1024:.2f} MB)")
    
    return release_dir, zip_filename

def show_release_info(release_dir, zip_filename):
    """显示发布信息"""
    print("\n" + "=" * 60)
    print("🎉 MP4视频压缩工具 - 发布包创建完成！")
    print("=" * 60)
    
    print(f"\n📦 发布目录: {release_dir}/")
    print("包含文件:")
    for file in os.listdir(release_dir):
        file_path = os.path.join(release_dir, file)
        if os.path.isfile(file_path):
            size = os.path.getsize(file_path)
            print(f"  - {file} ({size / 1024:.1f} KB)")
    
    print(f"\n📦 压缩包: {zip_filename}")
    zip_size = os.path.getsize(zip_filename)
    print(f"大小: {zip_size / 1024 / 1024:.2f} MB")
    
    print("\n🚀 分发说明:")
    print("1. 将压缩包发送给用户")
    print("2. 用户解压后先运行'环境检查.bat'")
    print("3. 环境检查通过后运行'MP4VideoCompressor.exe'")
    print("4. 详细使用说明在'使用说明.md'中")
    
    print("\n📋 系统要求:")
    print("- Windows 10/11 (64位)")
    print("- 需要安装FFmpeg")
    print("- 推荐4GB+内存")
    print("- 支持GPU硬件加速")
    
    print("\n🎯 主要特性:")
    print("- 独立运行，无需Python环境")
    print("- GPU硬件加速支持")
    print("- 实时进度显示和时间预估")
    print("- 多种压缩质量预设")
    print("- 批量处理支持")

def main():
    """主函数"""
    print("=" * 60)
    print("MP4视频压缩工具 - 发布包创建工具")
    print("=" * 60)
    
    # 检查必要文件
    if not os.path.exists("dist/MP4VideoCompressor.exe"):
        print("❌ 未找到exe文件，请先运行 python build_config.py 构建程序")
        return
    
    # 创建发布包
    release_dir, zip_filename = create_release_package()
    
    # 显示发布信息
    show_release_info(release_dir, zip_filename)
    
    print(f"\n🎉 发布包已准备就绪！")

if __name__ == "__main__":
    main()
